#region License, Terms and Author(s)
//
// TempRESS - TEMPlate Rendering Engine that's Small and Simple 
// Copyright (c) 2009 Atif Aziz. All rights reserved.
//
//  Author(s):
//
//      Atif Aziz, http://www.raboof.com
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#endregion

namespace Tempress
{
    using System.Collections.Generic;

    public sealed class TemplateCodeContext
    {
        private string ns;
        private string className;
        private List<string> assemblies;
        private TemplateArgumentCollection arguments;

        public string Namespace
        {
            get { return ns ?? string.Empty; }
            set { ns = value; }
        }

        public string ClassName
        {
            get { return className ?? string.Empty; }
            internal set { className = value; }
        }

        public bool HasAssemblies { get { return HasCollection(assemblies); } }

        public IList<string> Assemblies
        {
            get { return assemblies ?? (assemblies = new List<string>()); }
        }

        public bool HasArguments { get { return HasCollection(arguments); } }

        public TemplateArgumentCollection Arguments
        {
            get { return arguments ?? (arguments = new TemplateArgumentCollection()); }
        }

        private static bool HasCollection<T>(ICollection<T> collection)
        {
            return collection != null && collection.Count > 0;
        }
    }
}